package ltd.helper;

import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import ltd.bean.ChannelGroup;
import ltd.bean.Session;

/**
 * Created by chinalin on 2017/4/1.
 */
public class ChannelGroupHelper {
//===================================================================
    /**
     * 从SessionMap中取出一个session
     * @param key  以Channel的ID做为键值
     * @return Session
     */
    public static Session getSession(String key){
        return ChannelGroup.getInstance().getSessionMap().get(key) ;
    }

    /**
     * 存入session到SessionMap
     * @param key   以Channel的ID做为键值
     * @param session 一个连接的session
     */
    public static void putSession(String key,Session session){
        ChannelGroup.getInstance().getSessionMap().put(key,session) ;
    }

    /**
     * 从SessionMap中删除一个session
     * @param key 以Channel的ID做为键值
     */
    public static void removeSession(String key){
        ChannelGroup.getInstance().getSessionMap().remove(key) ;
    }
//===================================================================
    /**
     * 从GamepMap中取出一个Session
     * @param key 以 gameID做为键值
     * @return 游戏服务器的Session
     */
    public static Session getGameSession(Integer key){
        return ChannelGroup.getInstance().getGameMap().get(key) ;
    }
    /**
     * 存入session到GameMap
     * @param key 以 gameID做为键值
     * @param session 游戏服务器的Session
     */
    public static void putGameSession(Integer key,Session session){
        ChannelGroup.getInstance().getGameMap().put(key,session) ;
    }
    /**
     * 从GameMap中删除一个session
     * @param key 以 gameID做为键值
     */
    public static void removeGameSession(Integer key){
        ChannelGroup.getInstance().getGameMap().remove(key) ;
    }
//===================================================================
    /**
     * 得到一个channel
     * @param key 以Channel的ID做为键值
     * @return 用户、game的 Channel
     */
    public static ChannelHandlerContext getChannelHandlerContext(String key){
        return ChannelGroup.getInstance().getChannelMap().get(key) ;
    }
    /**
     * 将channel保存入channelMap
     * @param key 以Channel的ID做为键值
     * @param ctx 用户、game的 ChannelHandlerContext
     */
    public static void putChannelMap(String key, ChannelHandlerContext ctx){
        ChannelGroup.getInstance().getChannelMap().put(key,ctx) ;
    }
    /**
     * 从channelMap中删除一个channel
     * @param key 以Channel的ID做为键值
     */
    public static void removeChannelFormChannelMap(String key){
        ChannelGroup.getInstance().getChannelMap().remove(key) ;
    }
//===================================================================
    /**
     * 将channel保存入channelGroup,框架默认的Channel组
     * @param channel 用户、game的 Channel
     */
    public static void addChGroup(Channel channel){
        ChannelGroup.getInstance().getChGroup().add(channel) ;
    }
    /**
     * 从ChannelGroup中删除一个channel
     * @param channel 以Channel的ID做为键值
     */
    public static void removeChannelFormChGroup(Channel channel){
        ChannelGroup.getInstance().getChGroup().remove(channel) ;
    }
}
